import { defineStore } from 'pinia'
//定义并导出一个容器
//第一个参数为唯一ID，第二个参数为选项参数
// 返回值是一个函数，调用得到容器实例
export const useMainStore = defineStore('main', {
    // 这里类似于data，用来储存全局状态的
    // 必须是函数，防止交叉请求导致的数据状态污染
    // 必须是箭头函数
    state: () => {
        return {
            count: 520,
            Mes: 'HelloGuet!',
            arr: [1, 2, 3]
        }
    },
    // 这里类似于computed计算属性，有缓存功能
    getters: {
        count10(): String {
            console.log(this.Mes)
            return this.Mes
        }
    },
    // 这里类似于methods，封装业务逻辑，修改state
    actions: {
        ChangeState(num: number) {
            this.$patch(state => {
                state.count += num
                state.Mes = 'HelloHzj'
                state.arr.push(4)
            })
        }
    }
})

// 使用容器的state
// 修改state
// 容器中action的使用